style.scss 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. // 종목 상세 (/stock/[code]) — 상단 요약 + 탭 (시세 = 일별 시세 고밀도 테이블)
  2. #stock-detail {
  3. padding: var(--sp-6) var(--sp-7);
  4. @media (max-width: 767.98px) {
  5. padding: var(--sp-5) var(--sp-4);
  6. }
  7. // 상단 요약
  8. .stock-detail__summary {
  9. padding-bottom: var(--sp-5);
  10. border-bottom: 1px solid var(--border-default);
  11. }
  12. .stock-detail__title {
  13. display: flex;
  14. flex-wrap: wrap;
  15. align-items: center;
  16. gap: var(--sp-3);
  17. h1 {
  18. font-size: var(--fs-2xl);
  19. font-weight: 700;
  20. color: var(--text-primary);
  21. }
  22. }
  23. .stock-detail__code {
  24. font-size: var(--fs-base);
  25. color: var(--text-muted);
  26. font-variant-numeric: tabular-nums;
  27. }
  28. .stock-detail__sector {
  29. font-size: var(--fs-xs);
  30. color: var(--text-muted);
  31. }
  32. .stock-detail__price {
  33. display: flex;
  34. align-items: baseline;
  35. gap: var(--sp-4);
  36. margin-top: var(--sp-4);
  37. }
  38. .stock-detail__close {
  39. font-size: 28px;
  40. font-weight: 700;
  41. font-variant-numeric: tabular-nums;
  42. }
  43. .stock-detail__diff {
  44. font-size: var(--fs-lg);
  45. }
  46. .stock-detail__meta {
  47. display: flex;
  48. flex-wrap: wrap;
  49. gap: var(--sp-3) var(--sp-6);
  50. margin-top: var(--sp-4);
  51. div {
  52. display: flex;
  53. align-items: baseline;
  54. gap: var(--sp-3);
  55. }
  56. dt {
  57. font-size: var(--fs-xs);
  58. color: var(--text-muted);
  59. }
  60. dd {
  61. font-size: var(--fs-sm);
  62. color: var(--text-primary);
  63. font-variant-numeric: tabular-nums;
  64. }
  65. // mobile 1열 스택
  66. @media (max-width: 767.98px) {
  67. flex-direction: column;
  68. gap: var(--sp-2);
  69. }
  70. }
  71. // T+1 명시 라벨
  72. .stock-detail__basis {
  73. margin-top: var(--sp-3);
  74. font-size: var(--fs-xs);
  75. color: var(--text-muted);
  76. }
  77. // 탭
  78. .stock-detail__tabs {
  79. display: flex;
  80. gap: var(--sp-1);
  81. margin-top: var(--sp-5);
  82. border-bottom: 1px solid var(--border-default);
  83. a {
  84. display: inline-block;
  85. padding: var(--sp-3) var(--sp-5);
  86. font-size: var(--fs-base);
  87. color: var(--text-secondary);
  88. border-bottom: 2px solid transparent;
  89. &:hover {
  90. color: var(--text-primary);
  91. }
  92. &[aria-current='page'] {
  93. color: var(--text-primary);
  94. font-weight: 600;
  95. border-bottom-color: var(--az-accent);
  96. }
  97. }
  98. }
  99. .stock-detail__panel {
  100. margin-top: var(--sp-5);
  101. }
  102. // 일별 시세 테이블 — 얇은 선, 밀도 변수 소비
  103. .stock-detail__table {
  104. width: 100%;
  105. border-collapse: collapse;
  106. caption {
  107. position: absolute;
  108. width: 1px;
  109. height: 1px;
  110. overflow: hidden;
  111. clip: rect(0 0 0 0);
  112. white-space: nowrap;
  113. }
  114. thead th {
  115. position: sticky;
  116. top: 0;
  117. height: var(--row-h);
  118. padding: 0 var(--cell-px);
  119. font-size: var(--cell-fs);
  120. font-weight: 600;
  121. color: var(--text-muted);
  122. text-align: right;
  123. background: var(--bg-elevated);
  124. border-bottom: 1px solid var(--border-strong);
  125. &:first-child {
  126. text-align: left;
  127. }
  128. }
  129. tbody td {
  130. height: var(--row-h);
  131. padding: 0 var(--cell-px);
  132. font-size: var(--cell-fs);
  133. color: var(--text-primary);
  134. text-align: right;
  135. border-bottom: 1px solid var(--border-light);
  136. font-variant-numeric: tabular-nums;
  137. white-space: nowrap;
  138. &:first-child {
  139. text-align: left;
  140. }
  141. }
  142. tbody tr:hover {
  143. background: var(--bg-subtle-hover);
  144. }
  145. // mobile: 날짜/종가/등락률/거래량만 유지
  146. @media (max-width: 767.98px) {
  147. .stock-detail__col--sub {
  148. display: none;
  149. }
  150. }
  151. }
  152. // 준비 중 placeholder / 에러 / 빈 데이터
  153. .stock-detail__placeholder,
  154. .stock-detail__empty,
  155. .stock-detail__error {
  156. padding: var(--sp-7) var(--sp-5);
  157. font-size: var(--fs-base);
  158. color: var(--text-muted);
  159. text-align: center;
  160. }
  161. .stock-detail__error strong {
  162. display: block;
  163. margin-bottom: var(--sp-3);
  164. color: var(--text-secondary);
  165. }
  166. }